'''
Created on 17/06/2013

@author: mirta
'''
#from flask import jsonify

import json
from app.nodo import Nodo
from app.nodo import construir_lista 

from app.arista import Arista
from app.arista import construir_lista_arista

#import simplejson as json

from flask import Blueprint
#from flask import request, flash
from flask import render_template
#from flask import redirect
#from flask import url_for

from app.models.proyecto import Proyecto
from app.models.fase import Fase
from app.models.item import Item
#from app.models.entidad import Entidad
#from app.models.usuario import Usuario
#from app.models.rol import Rol
#from app.models.permiso import Permiso
from app.security import g 
#from app.security import permission

mod = Blueprint('grafico', __name__, url_prefix='/grafico')


@mod.route('/items/<proyecto>/', methods=['GET', 'POST'])
def graficar_items(proyecto):
    """
    Muestra graficamente los items de un proyecto con sus relaciones si lo hubiere
    @param proyecto: id del proyecto cuyos items se quieren graficar
    @return: el grafico con todos los items del proyecto y sus relaciones
    """
    proyecto_seleccionado = Proyecto.query.filter_by(id=proyecto).first() 
    
    fases = Fase.query.filter_by(proyecto_id=proyecto_seleccionado.id)
    fases = fases.all()  
    
    lista_nodos = []
    lista_aristas = []
    
    for fase in fases:
        items = Item.query.filter_by(fase_id=fase.id)
        items = items.all()
        
        for item in items:
            nodo = Nodo(str(item.id), item.nombre, str(item.costo))
            lista_nodos.append(nodo)
            
            if item.antecesor_id != None or item.antecesor_id == "":
                arista = Arista(str(item.antecesor_id), str(item.id), 'Antecesor')
                lista_aristas.append(arista)
            
            if item.padre_id != None or item.antecesor_id == "":
                arista = Arista(str(item.padre_id), str(item.id), 'Padre')
                lista_aristas.append(arista)
            
    
    return render_template('grafico/grafico.html', nodos=json.dumps(construir_lista(lista_nodos)), 
                           aristas = json.dumps(construir_lista_arista(lista_aristas)))
    #return { 'hola' : 'chau' }
    #Construimos unos cuantos nodos
    #nodo1 = Nodo('1', 'nodo 1', '200');
    #nodo2 = Nodo('2', 'nodo 2', '300');
    #nodo3 = Nodo('3', 'nodo 3', '400');
    #esto es lo que recibimos de la db guau
    #nodos = [ nodo1, nodo2, nodo3 ]
    #return jsonify(construir_lista(nodos))